package proyecto.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import proyecto.excepcion.DAOExcepcion;
import proyecto.modelo.Propietario;
import proyecto.util.ConexionBD;

public class PropietarioDAO extends BaseDAO {

	public Propietario insertar(Propietario re) throws DAOExcepcion {
		String query = "INSERT INTO persona (nombre, apePaterno, apeMaterno, nroDocumento, correo, telefono, usuario, contrasenia, tipoPersona, edad) VALUES (?,?,?,?,?,?,?,?,?,?)";
		Connection con = null;
		PreparedStatement stmt = null;
		try {
			con = ConexionBD.obtenerConexion();
			stmt = con.prepareStatement(query);
			stmt.setString(1, re.getNombre());
			stmt.setString(2, re.getApePateno());
			stmt.setString(3, re.getApeMaterno());
			stmt.setString(4, re.getNroDocumento());
			stmt.setString(5, re.getCorreo());
			stmt.setString(6, re.getTelefono());
			stmt.setString(7, re.getUsuario());
			stmt.setString(8, re.getContrasenia());
			stmt.setInt(9, re.getTipoPersona());
			stmt.setInt(10, re.getEdad());

			int i = stmt.executeUpdate();
			if (i != 1) {
				throw new SQLException(
						"No se pudo insertar el registro residente!");
			}
		} catch (Exception e) {
			System.err.println(e);
			throw new DAOExcepcion(e.getMessage());
		} finally {
			this.cerrarStatement(stmt);
			this.cerrarConexion(con);
		}
		return re;
	}

	public boolean validarExistencia(Propietario re) throws DAOExcepcion {
		String query = "SELECT COUNT(*) FROM persona WHERE idpersona = ?";
		Connection con = null;
		PreparedStatement stmt = null;
		try {
			con = ConexionBD.obtenerConexion();
			stmt = con.prepareStatement(query);
			stmt.setInt(1, re.getIdPersona());

			ResultSet rs = stmt.executeQuery();
			rs.next();
			int count = rs.getInt(1);
			return (count > 0);

		} catch (Exception e) {
			System.out.println(e);
			throw new DAOExcepcion(e.getMessage());
		} finally {
			this.cerrarStatement(stmt);
			this.cerrarConexion(con);
		}
	}

}